<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
  "http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
  <!ENTITY % general-entities SYSTEM "../general.ent">
  %general-entities;
]>

<sect1 id="pre-hostreqs" xreflabel="Host System Requirements">
  <?dbhtml filename="hostreqs.html"?>

  <title>Требования к хост-системе</title>

    <para>Ваша хост система должна иметь следующее программное обеспечение с
    минимальными версиями, которые будут указаны. На современных дистрибутивах проблем не должно быть, однако,
	 необходимо знать, что некоторые дистрибутивы хранят заголовочные файлы в отдельных пакетах, как правило, в таком формате:
    <quote>&lt;package-name&gt;-devel</quote> или
    <quote>&lt;package-name&gt;-dev</quote>.
    Убедитесь что они были установлены, в случае если ваш дистрибутив их предоставляет.</para>

   <para>
   Более ранние версии из списка программного обеспечения могут работать, но этот момент
   не проверялся (тестирование не производилось).</para>

  <itemizedlist spacing="compact">

    <listitem>
      <para><emphasis role="strong">Bash-3.2</emphasis> (/bin/sh
      должен быть символической или жесткой ссылкой на bash)</para>
    </listitem>

    <listitem>
      <para><emphasis role="strong">Binutils-2.25</emphasis> (Версия старше чем
       &binutils-version; не рекомендуется, потому что тестирование таковой не проводилось.</para>
    </listitem>

    <listitem>
      <para><emphasis role="strong">Bison-2.7</emphasis> (/usr/bin/yacc
      должен быть ссылкой на bison или небольшим скриптом который выполняет bison)</para>
    </listitem>

    <listitem>
      <para><emphasis role="strong">Bzip2-1.0.4</emphasis></para>
    </listitem>

    <listitem>
      <para><emphasis role="strong">Coreutils-6.9</emphasis></para>
    </listitem>

    <listitem>
      <para><emphasis role="strong">Diffutils-2.8.1</emphasis></para>
    </listitem>

    <listitem>
      <para><emphasis role="strong">Findutils-4.2.31</emphasis></para>
    </listitem>

    <listitem>
      <para><emphasis role="strong">Gawk-4.0.1</emphasis> (/usr/bin/awk
      должен быть ссылкой на gawk)</para>
    </listitem>

    <listitem>
      <para><emphasis role="strong">GCC-5.2</emphasis> включая компилятор Си++
      , <command>g++</command> (Версия старше чем  &gcc-version; не рекомендуется,
      потому что тестирование таковой не проводилось.)</para>
    </listitem>

    <listitem>
      <para><emphasis role="strong">Glibc-2.11</emphasis> (Версия старше чем
       &glibc-version; не рекомендуется,
      потому что тестирование таковой не проводилось.)</para>
    </listitem>

    <listitem>
      <para><emphasis role="strong">Grep-2.5.1a</emphasis></para>
    </listitem>

    <listitem>
      <para><emphasis role="strong">Gzip-1.3.12</emphasis></para>
    </listitem>

    <listitem>
      <para><emphasis role="strong">Ядро Linux &min-kernel;</emphasis></para>

      <para>Причина минимальной версии ядра - указание такой версии при сборке пакета <application>glibc</application> в главе&nbsp;6, которая является рекомендацией разработчиков. Она также необходима для пакета udev.</para>

      <para>Если версия ядра хост системы более ранняя, чем &min-kernel; вам придется заменить его на более свежую. Существует как минимум два способа как это сделать. Сперва посмотрите, предоставляет ли дистрибутив хост системы ядро версии &min-kernel; или более позднюю. Если этот так - нужно его обновить. В ином случае, вы можете выполнить сборку
      ядра самостоятельно. Инструкции для компиляции ядра и настройка загрузчика представлены в
      главе <xref linkend="chapter-bootable"/> (При условии что в хост системе используется загрузчик GRUB).</para>
    </listitem>

    <listitem>
      <para><emphasis role="strong">M4-1.4.10</emphasis></para>
    </listitem>

    <listitem>
      <para><emphasis role="strong">Make-4.0</emphasis></para>
    </listitem>

    <listitem>
      <para><emphasis role="strong">Patch-2.5.4</emphasis></para>
    </listitem>

    <listitem>
      <para><emphasis role="strong">Perl-5.8.8</emphasis></para>
    </listitem>

	 <listitem>
      <para><emphasis role="strong">Python-3.4</emphasis></para>
    </listitem>

    <listitem>
      <para><emphasis role="strong">Sed-4.1.5</emphasis></para>
    </listitem>

    <listitem>
      <para><emphasis role="strong">Tar-1.22</emphasis></para>
    </listitem>

    <listitem>
      <para><emphasis role="strong">Texinfo-4.7</emphasis></para>
    </listitem>

    <listitem>
      <para><emphasis role="strong">Xz-5.0.0</emphasis></para>
    </listitem>

  </itemizedlist>

  <important>
    <para>Обратите внимание, что упомянутые выше символические ссылки необходимы для создания системы LFS используя инструкции, содержащиеся в этой книге. Символические ссылки которые
    указывают на программы (такие как dash, mawk, и т.д.) могут работать, но они не тестировались и не поддерживаются командой разработчиков LFS и возможно потребуются отклонения от инструкций или применение дополнительных патчей  для некоторых пакетов.</para>
  </important>

  <!-- Use an empty sect2 element to prevent a pdf warning.  -->
  <bridgehead renderas="sect2"
              id="version-check"
              xreflabel="Требования к хост-системе">
  </bridgehead>
  <!--<title> </title>-->

  <para >Чтобы узнать, имеет ли ваша хост-система все соответствующие версии и
   возможность компиляции программ, выполните следующие действия:</para>

<!-- ANY additional lines in the script cause a pdf rendering problem-->
<screen role="nodump"><userinput>cat &gt; version-check.sh &lt;&lt; "EOF"
<literal>#!/bin/bash
# Simple script to list version numbers of critical development tools
export LC_ALL=C
bash --version | head -n1 | cut -d" " -f2-4
MYSH=$(readlink -f /bin/sh)
echo "/bin/sh -&gt; $MYSH"
echo $MYSH | grep -q bash || echo "ERROR: /bin/sh does not point to bash"
unset MYSH

echo -n "Binutils: "; ld --version | head -n1 | cut -d" " -f3-
bison --version | head -n1

if [ -h /usr/bin/yacc ]; then
  echo "/usr/bin/yacc -> `readlink -f /usr/bin/yacc`";
elif [ -x /usr/bin/yacc ]; then
  echo yacc is `/usr/bin/yacc --version | head -n1`
else
  echo "yacc not found"
fi

bzip2 --version 2&gt;&amp;1 &lt; /dev/null | head -n1 | cut -d" " -f1,6-
echo -n "Coreutils: "; chown --version | head -n1 | cut -d")" -f2
diff --version | head -n1
find --version | head -n1
gawk --version | head -n1

if [ -h /usr/bin/awk ]; then
  echo "/usr/bin/awk -&gt; `readlink -f /usr/bin/awk`";
elif [ -x /usr/bin/awk ]; then
  echo awk is `/usr/bin/awk --version | head -n1`
else
  echo "awk not found"
fi

gcc --version | head -n1
g++ --version | head -n1
ldd --version | head -n1 | cut -d" " -f2-  # glibc version
grep --version | head -n1
gzip --version | head -n1
cat /proc/version
m4 --version | head -n1
make --version | head -n1
patch --version | head -n1
echo Perl `perl -V:version`
python3 --version
sed --version | head -n1
tar --version | head -n1
makeinfo --version | head -n1  # texinfo version
xz --version | head -n1
<?hard-pagebreak?>
echo 'int main(){}' &gt; dummy.c &amp;&amp; g++ -o dummy dummy.c
if [ -x dummy ]
  then echo "g++ compilation OK";
  else echo "g++ compilation failed"; fi
rm -f dummy.c dummy</literal>
EOF

bash version-check.sh</userinput></screen>
<!--
  <para>Also check for some library consistency:</para>

<screen role="nodump"><userinput>cat &gt; library-check.sh &lt;&lt; "EOF"
<literal>#!/bin/bash
for lib in lib{gmp,mpfr,mpc}.la; do
  echo $lib: $(if find /usr/lib* -name $lib|
               grep -q $lib;then :;else echo not;fi) found
done
unset lib</literal>
EOF

bash library-check.sh</userinput></screen>

<para>The files identified by this script should be all present
or all absent, but not only one or two present.</para>
-->

</sect1>
